const express = require('express');
const router = express.Router();

// 数据库配置文件
const db  = require('../Mysql/index')
const bcrypt = require('bcrypt');
// 密码加密
const jm = require('bcryptjs')
let sql;

// 查询用户资料
router.get('/Admin/getUserInfo', (req, res) => {
    // 获取查询参数
    const data = req.query;
    //
    const user_id = data.user_id
    // 构建基本的 SQL 查询
    let sql = `
        SELECT u.username,u.nickname,u.phone,u.user_pic,u.shop_id,u.shop_name,u.address,r.rootName
        FROM user u
        LEFT JOIN userroot r ON u.root = r.id
        WHERE u.id = ?
    `;

    // 执行查询
    db.query(sql, [user_id], (err, result) => {
        if (err) {
            console.error(err);
            return res.send({ err }); // 查询异常返回报错
        }

        const resdata = result;
        // 如果查询成功但没有结果，返回空结果
        if (resdata.length === 0) {
            return res.cc( "没有找到相关数据");
        }
        res.cc({
            data: result,
        }, 1, "查询成功");

    });
});
// 查询权限列表
router.get('/Admin/getUserRoot_List', (req, res) => {
    // 获取查询参数
    const data = req.query;
    // 构建基本的 SQL 查询
    let sql = `
        SELECT *
        FROM userroot
    `;

    // 执行查询
    db.query(sql, (err, result) => {
        if (err) {
            console.error(err);
            return res.send({ err }); // 查询异常返回报错
        }

        const resdata = result;
        // 如果查询成功但没有结果，返回空结果
        if (resdata.length === 0) {
            return res.cc( "没有找到相关数据");
        }
        res.cc({
            data: result,
        }, 1, "查询成功");

    });
});
// 管理员查询用户列表
router.get('/Admin/getUserList', (req, res) => {
    // 获取查询参数
    const data = req.query;
    // 构建基本的 SQL 查询
    let sql1 = `
        SELECT u.username, u.nickname,  u.root, u.phone, u.user_pic, u.shop_id, u.shop_name, u.address, s.text
        FROM user u
        LEFT JOIN userroot r ON u.root = r.id
        LEFT JOIN userstatus s ON u.\`status\` COLLATE utf8mb4_general_ci = s.\`key\` COLLATE utf8mb4_general_ci
    `;
    // 执行查询
    db.query(sql1,(err, result) => {
        if (err) {
            console.error(err);
            return res.send({ err }); // 查询异常返回报错
        }

        const resdata = result;
        // 如果查询成功但没有结果，返回空结果
        if (resdata.length === 0) {
            return res.cc( "没有找到相关数据");
        }
        res.cc({
            data: result,
        }, 1, "查询成功");

    });
});
// 管理员查询用户详情
router.get('/Admin/getUserInfoList', (req, res) => {
    // 获取查询参数
    const data = req.query;

    const user_id = data.user_id
    if(!user_id){
        return res.cc('用户id丢失 !')
    }
    // 构建基本的 SQL 查询
    let sql1 = `
        SELECT u.*,u.username,u.nickname,u.phone,u.user_pic,u.shop_id,u.shop_name,u.address,r.rootName
        FROM user u
        LEFT JOIN userroot r ON u.root = r.id
        where u.id = ?
    `;
    // 执行查询
    db.query(sql, [user_id], (err, result) => {
        if (err) {
            console.error(err);
            return res.send({ err }); // 查询异常返回报错
        }

        const resdata = result;
        // 如果查询成功但没有结果，返回空结果
        if (resdata.length === 0) {
            return res.cc( "没有找到相关数据");
        }
        res.cc({
            data: result,
        }, 1, "查询成功");

    });
});

//更改用户数据
router.post('/Admin/updateUser_List', (req, res) => {
    // 获取请求体中的参数
    const { id } = req.body; // 必须包含 id 和 shopUserId
    const updates = {};
    // 检查参数是否存在
    if (!id) {
        return res.cc("缺少必要的参数: id");
    }

    // 动态构建更新字段
    for (const key in req.body) {
        if (key !== 'id') { // 排除 id 和 shopUserId
            updates[key] = req.body[key];
        }
    }
    console.log('参数',updates)
    // 确保至少有一个字段需要更新
    if (Object.keys(updates).length === 0) {
        return res.cc("没有提供任何可更新的字段");
    }

    // 构建 SQL 更新语句
    const setClause = Object.keys(updates).map(key => `${key} = ?`).join(', ');
    const sql = `UPDATE user SET ${setClause} WHERE id = ?`;

    // 执行更新操作
    const sqlValues = [...Object.values(updates), id];

    db.query(sql, sqlValues, (err, result) => {
        if (err) {
            console.error(err);
            return res.cc(err.sqlMessage ); // 查询异常返回报错
        }

        // 检查是否有行被更改
        if (result.affectedRows === 0) {
            return res.cc("未找到对应的用户或未进行任何修改");
        }
        // 返回成功信息
        res.cc("",1,"该用户资料修改成功",);
    });
});

module.exports = router;
